Skip to content
📖0 阅读·🤍0 点赞

在RAG(检索增强生成)系统中,检索质量直接决定了大模型回答准不准。今天我用最接地气的方式,聊聊三个核心指标:Recall@K、MRR 和 NDCG

别被名字吓到!一句话总结:
Recall@K 看“找没找到”
MRR 和 NDCG 看“排得好不好”

下面用例子、图示和对比,帮你一次性搞懂!

1. Recall@K 是什么?(最直观的“有没有”)

用户问一个问题,系统去知识库检索,返回前 K 条结果。
Recall@K 关心的只有一件事:正确答案有没有出现在这前 K 条里?

举个例子:
正确文档是 Doc B
系统返回的前 5 条结果是:

  1. Doc X
  2. Doc A
  3. Doc B(正确!)
  4. Doc Y
  5. Doc Z

计算结果:

  • Recall@1 = 0
  • Recall@2 = 0
  • Recall@3 = 1
  • Recall@5 = 1

它回答的问题就是:“检索器有没有把有用资料捞上来?”
超级适合评估向量检索、BM25、Hybrid retrieval 的召回能力。

缺点也很明显:它完全不在乎顺序!即使正确文档排在第 3 位,Recall@3 依然是 1,但用户体验差多了。

2. MRR 是什么?(看“第一个正确答案来得有多早”)

MRR = Mean Reciprocal Rank(平均倒数排名)。
它只盯着第一个正确结果排在第几名,越靠前得分越高。

直觉公式(不用背,懂意思就行):

  • 第 1 名命中 → 得分 1
  • 第 2 名 → 0.5
  • 第 3 名 → ≈0.333
  • 第 10 名 → 0.1

下面这张图用真实 Query 示例,清晰展示了不同排名的得分和 MRR 计算过程:

适合场景:FAQ 系统、找唯一正确文档、找最佳答案页。
局限:如果一个问题有多个相关文档,MRR 只看“第一个”,忽略了后面的。

3. NDCG 是什么?(最全面的“整体排序质量”)

NDCG = Normalized Discounted Cumulative Gain(归一化折扣累积增益)。
它同时考虑三点:

  1. 相关结果有没有出现
  2. 排得靠不靠前(越靠后越打折)
  3. 区分“有多相关”(非常相关比一般相关更值钱)

经典好坏排序对比(这张图完美展示了“理想排序 vs 实际排序”的视觉差异):

为什么要 Normalized?把当前得分除以“理想最优排序”的得分,最后落在 0~1 之间:1 = 完美排序,越接近 1 越好。

4. 三者最核心区别(公式直观对比)

  • Recall@K:前 K 个里有没有覆盖正确结果?(只看“找没找到”)
  • MRR:第一个正确结果来得早不早?(只关心第一个)
  • NDCG:多个相关结果整体排得好不好?还能区分“有多相关”(最全面)

下面这张图直接并列 MRR 和 NDCG 的公式,一眼看懂区别:

5. 用一个统一例子再对比

假设一个问题有 3 个相关文档:

  • Doc A:非常相关
  • Doc B:一般相关
  • Doc C:稍微相关

优秀排序:Doc A → Doc B → 噪声 → Doc C → 噪声
→ Recall@5=1,MRR=1,NDCG很高

糟糕排序:噪声 → Doc C → 噪声 → Doc B → Doc A
→ Recall@5=1,但 MRR=0.5,NDCG明显更低

这就说明:Recall@K 高,不代表排序好!

6. 在 RAG 项目里怎么用它们?

  • Recall@K → 评估召回器(向量检索、BM25、Hybrid)
  • MRR → 看用户能不能很快拿到正确证据
  • NDCG → 评估排序器 / reranker(最推荐,尤其多个 chunk 时)

7. 工程实战小建议

千万别只看一个指标!
推荐至少一起看:Recall@K(有没有漏) + MRR 或 NDCG(排得够不够好)。

常见坑:Recall@10 很高,但 MRR 很低 → 说明“能找到,但总排不靠前”。这时问题通常出在排序、query rewrite 或 chunk 太噪上。

8. 一句话快速记忆

  • Recall@K:找到了没有?
  • MRR:第一个正确答案来得早不早?
  • NDCG:整体排序好不好?高价值结果是否排前面?

掌握了这三个指标,你的 RAG 系统评估就有了“灵魂”!

点赞、收藏、转发给需要的朋友~ 下期我们聊怎么用这些指标做自动化评测,敬请期待!

💬

评论功能

当前站点为 GitHub Pages 镜像版本,不支持评论功能。

如需发表评论,请访问主域名版本:

🚀 前往 主域名 版本评论
✅ 支持文字评论
✅ 支持图片上传

用代码书写人生 | This site is powered by Netlify

🌙